/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package Current;

import Current.Units.*;

import java.io.Serializable;

/**
 * @author Fork
 */
public class UnitTraining implements Serializable, Cloneable {

    private Miners Miners;

    private Soldiers Soldiers;
    private Soldiers Knights;
    private Soldiers Berserkers;
    private Soldiers Warriors;

    private Guards Guards;
    private Guards Archers;
    private Guards EliteArchers;
    private Guards RoyalGuards;

    private Spies Spies;
    private Spies Infiltrators;
    private Spies Assassins;

    private Sentries Sentries;
    private Sentries Sentinels;
    private Sentries Inquisitors;

    public UnitTraining() {
        this.Miners = new Miners(2000, 0, true, 0);

        this.Soldiers = new Soldiers(1500, 0, true, 3);
        this.Knights = new Soldiers(10000, 0, false, 20);
        this.Berserkers = new Soldiers(25000, 0, false, 50);
        this.Warriors = new Soldiers(50000, 0, false, 100);

        this.Guards = new Guards(1500, 0, true, 3);
        this.Archers = new Guards(10000, 0, false, 20);
        this.EliteArchers = new Guards(25000, 0, false, 50);
        this.RoyalGuards = new Guards(50000, 0, false, 100);

        this.Spies = new Spies(1500, 0, true, 3);
        this.Infiltrators = new Spies(10000, 0, false, 20);
        this.Assassins = new Spies(25000, 0, false, 50);

        this.Sentries = new Sentries(1500, 0, true, 3);
        this.Sentinels = new Sentries(10000, 0, false, 20);
        this.Inquisitors = new Sentries(25000, 0, false, 50);
    }

    public Miners getMiners() {
        return Miners;
    }

    public int getNumMiners() {
        return Miners.getHaveTrained();
    }

    public void setMiners(Miners Miners) {
        this.Miners = Miners;
    }

    public void setNumMiners(int numMiners) {
        this.Miners.setHaveTrained(numMiners);
    }

    public Guards getArchers() {
        return Archers;
    }

    public int getNumArchers() {
        return Archers.getHaveTrained();
    }

    public void setArchers(Guards Archers) {
        this.Archers = Archers;
    }

    public void setNumArchers(int numArchers) {
        this.Archers.setHaveTrained(numArchers);
    }

    public Spies getAssassins() {
        return Assassins;
    }

    public int getNumAssassins() {
        return Assassins.getHaveTrained();
    }

    public void setAssassins(Spies Assassins) {
        this.Assassins = Assassins;
    }

    public void setNumAssassins(int numAssassins) {
        this.Assassins.setHaveTrained(numAssassins);
    }

    public Soldiers getBerserkers() {
        return Berserkers;
    }

    public int getNumBerserkers() {
        return Berserkers.getHaveTrained();
    }

    public void setBerserkers(Soldiers Berserkers) {
        this.Berserkers = Berserkers;
    }

    public void setNumBerserkers(int numBerserkers) {
        this.Berserkers.setHaveTrained(numBerserkers);
    }

    public Guards getEliteArchers() {
        return EliteArchers;
    }

    public int getNumEliteGuards() {
        return EliteArchers.getHaveTrained();
    }

    public void setEliteArchers(Guards EliteArchers) {
        this.EliteArchers = EliteArchers;
    }

    public void setNumEliteArchers(int numEliteArchers) {
        this.EliteArchers.setHaveTrained(numEliteArchers);
    }

    public Guards getGuards() {
        return Guards;
    }

    public int getNumGuards() {
        return Guards.getHaveTrained();
    }

    public void setGuards(Guards Guards) {
        this.Guards = Guards;
    }

    public void setNumGuards(int numGuards) {
        this.Guards.setHaveTrained(numGuards);
    }

    public Spies getInfiltrators() {
        return Infiltrators;
    }

    public int getNumInfiltrators() {
        return Infiltrators.getHaveTrained();
    }

    public void setInfiltrators(Spies Infiltrator) {
        this.Infiltrators = Infiltrator;
    }

    public void setNumInfiltrators(int numInfiltrators) {
        this.Infiltrators.setHaveTrained(numInfiltrators);
    }

    public Sentries getInquisitors() {
        return Inquisitors;
    }

    public int getNumInquisitors() {
        return Inquisitors.getHaveTrained();
    }

    public void setInquisitors(Sentries Inquisitors) {
        this.Inquisitors = Inquisitors;
    }

    public void setNumInquisitors(int numInquisitors) {
        this.Inquisitors.setHaveTrained(numInquisitors);
    }

    public Soldiers getKnights() {
        return Knights;
    }

    public int getNumKnights() {
        return Knights.getHaveTrained();
    }

    public void setKnights(Soldiers Knights) {
        this.Knights = Knights;
    }

    public void setNumKnights(int numKnights) {
        this.Knights.setHaveTrained(numKnights);
    }

    public Guards getRoyalGuards() {
        return RoyalGuards;
    }

    public int getNumRoyalGuards() {
        return RoyalGuards.getHaveTrained();
    }

    public void setRoyalGuards(Guards RoyalGuards) {
        this.RoyalGuards = RoyalGuards;
    }

    public void setNumRoyalGuards(int numRoyalGuards) {
        this.RoyalGuards.setHaveTrained(numRoyalGuards);
    }

    public Sentries getSentinels() {
        return Sentinels;
    }

    public int getNumSentinels() {
        return Sentinels.getHaveTrained();
    }

    public void setSentinels(Sentries Sentinels) {
        this.Sentinels = Sentinels;
    }

    public void setNumSentinels(int numSentinels) {
        this.Sentinels.setHaveTrained(numSentinels);
    }

    public Sentries getSentries() {
        return Sentries;
    }

    public int getNumSentries() {
        return Sentries.getHaveTrained();
    }

    public void setSentries(Sentries Sentries) {
        this.Sentries = Sentries;
    }

    public void setNumSentries(int numSentries) {
        this.Sentries.setHaveTrained(numSentries);
    }

    public Soldiers getSoldiers() {
        return Soldiers;
    }

    public int getNumSoldiers() {
        return Soldiers.getHaveTrained();
    }

    public void setSoldiers(Soldiers Soldiers) {
        this.Soldiers = Soldiers;
    }

    public void setNumSoldiers(int numSoldiers) {
        this.Soldiers.setHaveTrained(numSoldiers);
    }

    public Spies getSpies() {
        return Spies;
    }

    public int getNumSpies() {
        return Spies.getHaveTrained();
    }

    public void setSpies(Spies Spies) {
        this.Spies = Spies;
    }

    public void setNumSpies(int numSpies) {
        this.Spies.setHaveTrained(numSpies);
    }

    public Soldiers getWarriors() {
        return Warriors;
    }

    public int getNumWarriors() {
        return Warriors.getHaveTrained();
    }

    public void setWarriors(Soldiers Warriors) {
        this.Warriors = Warriors;
    }

    public void setNumWarriors(int numWarriors) {
        this.Warriors.setHaveTrained(numWarriors);
    }

    public int getTotalSoldiers() {
        int aux = Soldiers.getHaveTrained();
        aux += Knights.getHaveTrained();
        aux += Berserkers.getHaveTrained();
        aux += Warriors.getHaveTrained();

        return aux;
    }

    public int getexpertSoldiers() {
        int aux = Knights.getHaveTrained();
        aux += Berserkers.getHaveTrained();
        aux += Warriors.getHaveTrained();

        return aux;
    }

    public int getTotalGuards() {
        int aux = Guards.getHaveTrained();
        aux += Archers.getHaveTrained();
        aux += EliteArchers.getHaveTrained();
        aux += RoyalGuards.getHaveTrained();

        return aux;
    }

    public int getExpertGuards() {
        int aux = Archers.getHaveTrained();
        aux += EliteArchers.getHaveTrained();
        aux += RoyalGuards.getHaveTrained();

        return aux;
    }

    public int getTotalSpies() {
        int aux = Spies.getHaveTrained();
        aux += Infiltrators.getHaveTrained();
        aux += Assassins.getHaveTrained();

        return aux;
    }

    public int getExpertSpies() {
        int aux = Infiltrators.getHaveTrained();
        aux += Assassins.getHaveTrained();

        return aux;
    }

    public int getTotalSentries() {
        int aux = Sentries.getHaveTrained();
        aux += Sentinels.getHaveTrained();
        aux += Inquisitors.getHaveTrained();

        return aux;
    }

    public int getExpertSentries() {
        int aux = Sentinels.getHaveTrained();
        aux += Inquisitors.getHaveTrained();

        return aux;
    }

    public int getOffenseFromSoldiers() {
        int aux = Soldiers.getTotalOffenseIncrease();

        aux += Knights.getTotalOffenseIncrease();
        aux += Berserkers.getTotalOffenseIncrease();
        aux += Warriors.getTotalOffenseIncrease();

        return aux;
    }

    public int getDefenseFromGuards() {
        int aux = Guards.getTotalDefenseIncrease();
        aux += Archers.getTotalDefenseIncrease();
        aux += EliteArchers.getTotalDefenseIncrease();
        aux += RoyalGuards.getTotalDefenseIncrease();

        return aux;
    }

    public int getSpyOffenseFromSpies() {
        int aux = Spies.getTotalSpyOffenseIncrease();
        aux += Infiltrators.getTotalSpyOffenseIncrease();
        aux += Assassins.getTotalSpyOffenseIncrease();

        return aux;
    }

    public int getSpyDefenseFromSentries() {
        int aux = Sentries.getTotalSpyDefenseIncrease();
        aux += Sentinels.getTotalSpyDefenseIncrease();
        aux += Inquisitors.getTotalSpyDefenseIncrease();

        return aux;
    }
}
